import Vue from 'vue'
import App from './App.vue'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.config.productionTip = false
Vue.use(ElementUI)
//禁用警告信息
Vue.config.silent = true;

import VueRouter from "vue-router"
import router from './router/index.js'
import store from "@/vuex/store"
import axios  from "axios"
const VueComponentConstructor = Vue.extend({})
const vc = new VueComponentConstructor()
Vue.prototype.$bus = vc

// 请求拦截器
axios.interceptors.request.use(
    config => {
       // 在发送请求之前做些什么，例如添加token到请求头
       // 序列化后的字符串会比原来的字符串多2个字符，所以记得要转换回来
      const token = JSON.parse(localStorage.getItem('token'));
      if (token) {
        config.headers.Authorization = token;
        //config.headers.token=`${token}`
      }
      return config;
    },
    error => {
      // 对请求错误做些什么
      return Promise.reject(error);
    }
);

// 响应拦截器
axios.interceptors.response.use(
    response => {
      // 对响应数据做些什么
      return response;
    },
    error => {
      // 对响应错误做些什么
        if (error.response.status == 401) {
            //删除缓存
            localStorage.clear()
            setTimeout(()=>{
                router.replace('/login')
            },100)
            //提示信息
            Vue.prototype.$message.warning("账号失效，请重新登录！")
        }
      return Promise.reject(error);
    }
);

// 将axios实例挂载到Vue原型上，以便在组件中使用
Vue.prototype.$http = axios;

Vue.use(VueRouter)

new Vue({
    render: h => h(App),
    router: router,
    store:store,
    // beforeCreate() {
    //     Vue.prototype.$bus=this
    // }
}).$mount('#app')

